package model;

import java.io.Serializable;

import javax.persistence.*;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;


/**
 * The persistent class for the pacchetto database table.
 * 
 */
@Entity
@Table(name="pacchetto")
@NamedQuery(name="Pacchetto.findAll", query="SELECT p FROM Pacchetto p")
public class Pacchetto implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name="id_pacchetto")
	private int idPacchetto;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name="data_partenza")
	private Date dataPartenza;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name="data_ritorno")
	private Date dataRitorno;

	private String nome;

	@Column(name="numero_persone")
	private int numeroPersone;
	
	@Column(name="prezzo")
	private int prezzo;
	
	public int getPrezzo() {
		return prezzo;
	}

	public void setPrezzo(int prezzo) {
		this.prezzo = prezzo;
	}

	//bi-directional many-to-many association to Elemento
	@ManyToMany
	@JoinTable(
		name="componenti_pacchetti"
		, joinColumns={
			@JoinColumn(name="id_pacchetto")
			}
		, inverseJoinColumns={
			@JoinColumn(name="id_elemento")
			}
		)
	private List<Elemento> elementos;

	
	public Pacchetto() {
	}
	
	

	public Pacchetto(int idPacchetto, Date dataPartenza, Date dataRitorno,
			String nome, int numeroPersone, int prezzo) {
		super();
		this.idPacchetto = idPacchetto;
		this.dataPartenza = dataPartenza;
		this.dataRitorno = dataRitorno;
		this.nome = nome;
		this.numeroPersone = numeroPersone;
		this.prezzo = prezzo;
	}

	public int getIdPacchetto() {
		return this.idPacchetto;
	}

	public void setIdPacchetto(int idPacchetto) {
		this.idPacchetto = idPacchetto;
	}

	public Date getDataPartenza() {
		return this.dataPartenza;
	}

	public void setDataPartenza(String dataPartenza) throws ParseException {
		this.dataPartenza = new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).parse(dataPartenza);
	}

	public Date getDataRitorno() {
		return this.dataRitorno;
	}

	public void setDataRitorno(String dataRitorno) throws ParseException {
		this.dataRitorno = new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).parse(dataRitorno);
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getNumeroPersone() {
		return this.numeroPersone;
	}

	public void setNumeroPersone(int numeroPersone) {
		this.numeroPersone = numeroPersone;
	}

	public List<Elemento> getElementos() {
		return this.elementos;
	}

	public void setElementos(List<Elemento> elementos) {
		this.elementos = elementos;
	}

}